WEB-websocket,Notification通知
HTML5 桌面通知:Notification API
Notification API 是 HTML5 新增的桌面通知 API,用于向用户显示通知信息。该通知是脱离浏览器的,即使用户没有停留在当前标签页,甚至最小化了浏览器,该通知信息也一样会置顶显示出来。
websocket获取到数据,notify通知
用户允许网页的通知,利用websocket,将实时获取来的数据推送给用户。主要针对浏览器为chrome、火狐、safari等高级浏览器,不支持IE (ps: 本地是不行的,只有到https 的远程才可以进行推送)
1 | // copy的 websocket 简易封装 |
- 初始化websocket
1 | componentDidMount() { |
- 通知的设置
var notification = new Notification(title, options)
参数如下:
- title:通知的标题
- options:通知的设置选项(可选)。
- body:通知的内容。
- tag:代表通知的一个识别标签,相同tag时只会打开同一个通知窗口。
- icon:要在通知中显示的图标的URL。
- image:要在通知中显示的图像的URL。
- data:想要和通知关联的任务类型的数据。
- requireInteraction:通知保持有效不自动关闭,默认为false。
用户权限
想要向用户显示通知消息,需要获取用户权限,而相同的域名只需要获取一次权限。只有用户允许的权限下,Notification 才能起到作用,避免某些网站的广告滥用 Notification 或其它给用户造成影响。那么如何知道用户到底是允不允许的?
Notification.permission 该属性用于表明当前通知显示的授权状态,可能的值包括:
- default :不知道用户的选择,默认。
- granted :用户允许。
- denied :用户拒绝。
1 | if(Notification.permission === 'granted'){ |
请求权限
当用户还没选择的时候,我们需要向用户去请求权限。Notification 对象提供了 requestPermission() 方法请求用户当前来源的权限以显示通知。
以前基于回调的语法已经弃用(当然在现在的浏览器中还是能用的),最新的规范已将此方法更新为基于 promise 的语法:
1 | Notification.requestPermission().then(function(permission) { |
关闭通知
1 | var n = new Notification('提醒',{ |
Example:
1 | public setNotify(value: boolean) { |
- 是否通知的开关,包括声音的和notify的
1 | <Switch |
使用Service Worker发送Push推送 — web push
Web push在国外的网站还行,但在国内几乎没见到,主要还是因为谷歌在境内无法访问,因为web push走的是谷歌FCM通道,需要能接收到谷歌服务器的消息。但正常网络环境下是无法访问谷歌的,使得在国内搞它的意义不是很大,研究一下还是可以的。
PS:
不过这个浏览器通知也挺烦的,我个人比较不感冒,会把所有浏览器通知关掉。看产品需求吧。也可以用现有的库push.js.
参考链接:https://juejin.im/post/59d9b38ef265da064a0f72cc
谷歌官方 https://developers.google.com/web/fundamentals/codelabs/push-notifications/?hl=zh-cn
一个github项目 https://github.com/realtime-framework/WebPushNotifications